/**
 * 要理解协变和逆变，首先要知道为什么会有协变和逆变？
 * 因为在有类型系统的语言中，在编写代码的过程中会出现：子类赋值给父类、父类赋值给子类 的情况。
 * 
 * 协变：支持子类赋值给父类
 * 逆变：支持父类赋值给子类
 * 
 * 所以在这个过程中要保证【类型安全】。
 * 类型安全：
 * 通俗理解就是，保证【调用方】传入的参数类型拥有的属性和方法 一定 大于等于 【定义方】定义的类型拥有的属性和方法。
*/

/**
 * 总结一下：
 * 不管是协变还是逆变，都是为了达到一个目的，
 * 那就是【增加调用方参数类型拥有的属性和方法数量】，或者【减少定义方参数拥有的属性和数量】，来保证类型安全。
 * 函数类型的赋值，要考虑逆变的情况。
*/